/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import Entity.MahasiswaPeneliti;
import Entity.Penelitian;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import library.Koneksi;

/**
 *
 * @author user
 * model untuk menangani operasi database berkaitan dengan mahasiswa yang terlibat dalam kegiatan penelitian
 */

public class DaftarMahasiswaPeneliti {

    MahasiswaPeneliti mahasiswaPeneliti;

    //method digunakan untuk menambah data mahasiswa yang terlibat dalam kegiatan penelitian
    public boolean tambahTimMahasiswaPeneliti(MahasiswaPeneliti mahasiswa) {

        boolean hasil = false;
        this.mahasiswaPeneliti = mahasiswa;
        
        Connection conn = Koneksi.getKoneksi();
        PreparedStatement st = null;
        if(this.mahasiswaPeneliti.getPenelitian().getUniqueKey() != ""){
            ResultSet rs1 = null;
            try {
                String sql1 = "SELECT NO_PENELITIAN FROM PENELITIAN_DOSEN WHERE UNIQUEKEY = '"+this.mahasiswaPeneliti.getPenelitian().getUniqueKey()+"'";
                System.out.println(sql1);
                
                st = conn.prepareStatement(sql1);
                
                rs1 = st.executeQuery();
                
                while(rs1.next()){
                    Penelitian penelitian = new Penelitian();
                    penelitian.setNoPenelitian(rs1.getInt("NO_PENELITIAN"));
                    this.mahasiswaPeneliti.setPenelitian(penelitian);
                }
                //System.out.println("nomor cantik"+rs1.getInt("NO_PENELITIAN"));
                
            } catch (SQLException ex) {
                Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
            } finally{
                try {
                    st.close();
                } catch (SQLException ex) {
                    Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
                }
                try {
                    rs1.close();
                } catch (SQLException ex) {
                    Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } 
        
        String sql = "insert into mahasiswa_peneliti(NO_PENELITIAN, NRP_MAHASISWA, NAMA_MAHASISWA, JUDUL_TUGAS_AKHIR) "
                + "value('" + this.mahasiswaPeneliti.getPenelitian().getNoPenelitian()
                + "', '" + this.mahasiswaPeneliti.getNrpMahasiswa()
                + "', '" + this.mahasiswaPeneliti.getNamaMahasiswa()
                + "', '"+this.mahasiswaPeneliti.getJudulTugasAkhir()+"')";

        System.out.println(sql);
        
        try {
            
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if (rs > 0) {
                hasil = true;
            } else {
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return hasil;

    }

    //method digunakan untuk mengubah data mahasiswa yang terlibat dalam kegiatan penelitian
    public boolean ubahTimMahasiswaPeneliti(MahasiswaPeneliti mahasiswa) {

        boolean hasil = false;
        this.mahasiswaPeneliti = mahasiswa;

        String sql = "update mahasiswa_peneliti set NRP_MAHASISWA = '" + this.mahasiswaPeneliti.getNrpMahasiswa() + "', "
                + " NAMA_MAHASISWA = '" + this.mahasiswaPeneliti.getNamaMahasiswa() 
                + "', JUDUL_TUGAS_AKHIR = '" + this.mahasiswaPeneliti.getJudulTugasAkhir() 
                + "' where ID_MAHASISWA_PENELITI = " + this.mahasiswaPeneliti.getIdMahasiswaPeneliti();

        System.out.println(sql);

        PreparedStatement st = null;
        try {
            Connection conn = Koneksi.getKoneksi();
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if (rs > 0) {
                hasil = true;
            } else {
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return hasil;

    }

    //method digunakan untuk menghapus data mahasiswa yang terlibat dalam kegiatan penelitian
    public boolean hapusMahasiswaPeneliti(MahasiswaPeneliti mahasiswa) {

        boolean hasil = true;

        PreparedStatement st = null;

        String sql = "DELETE FROM mahasiswa_peneliti WHERE ID_MAHASISWA_PENELITI = '" +mahasiswa.getIdMahasiswaPeneliti() + "'";

        Connection conn = Koneksi.getKoneksi();
        try {
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if (rs > 0) {
                hasil = true;
            } else {
                hasil = false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return hasil;

    }
    
    //method digunakan untuk mengambil data daftar mahasiswa yang terlibat dalam kegiatan penelitian
    public List<MahasiswaPeneliti> ambilDaftarMahasiswaPeneliti(Penelitian penelitian){
        List<MahasiswaPeneliti> daftarMahasiswaPeneliti = new ArrayList<MahasiswaPeneliti>();
        
        String sql = "SELECT * FROM mahasiswa_peneliti, penelitian_dosen "
                + "WHERE penelitian_dosen.NO_PENELITIAN = mahasiswa_peneliti.NO_PENELITIAN "
                + "and penelitian_dosen.NO_PENELITIAN="+penelitian.getNoPenelitian();
        PreparedStatement st = null;
        ResultSet rs = null;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            rs = st.executeQuery();

            while(rs.next()){                
                this.mahasiswaPeneliti = new MahasiswaPeneliti();
                                
                this.mahasiswaPeneliti.setIdMahasiswaPeneliti(rs.getInt("ID_MAHASISWA_PENELITI"));
                this.mahasiswaPeneliti.setPenelitian(penelitian);
                this.mahasiswaPeneliti.setNamaMahasiswa(rs.getString("NAMA_MAHASISWA"));
                this.mahasiswaPeneliti.setNrpMahasiswa(rs.getString("NRP_MAHASISWA"));
                this.mahasiswaPeneliti.setJudulTugasAkhir(rs.getString("JUDUL_TUGAS_AKHIR"));
                
                daftarMahasiswaPeneliti.add(this.mahasiswaPeneliti);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarMahasiswaPeneliti.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return daftarMahasiswaPeneliti;
    }
}
